/*
 * Other.h
 *
 *  Created on: Jun 10, 2024
 *      Author: Liangmiyi
 */
#ifndef MY_INC_PHY_PHY_RMS_H_
#define MY_INC_PHY_PHY_RMS_H_

#include <math.h>
#include <stdint.h>
// typedef struct
// {
//     uint16_t Count;
//     float    Out_Last;
//     float    Sum;
//     uint16_t N;
// } RMS_Typedef;
// void  RMS_Init(RMS_Typedef *state, float F, float ts);
// float RMS(RMS_Typedef *state, float In);

#define RMS_WINDOW_SIZE 1000 // 假设50Hz交流电，采样率2kHz时窗口40点（20ms周期）
typedef struct
{
    uint16_t Cnt;
    float    Ac_Rms;
    float    Sum_qua;
    float    In_qua[RMS_WINDOW_SIZE];
} RMS_Typedef;
float RMS(RMS_Typedef *RMS, float Ac_Input);//只适用于提前知道目标频率，且单片机时钟频率与目标频率均绝对不变

#endif /* INC_Other_H_ */
